﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace Community.CsharpSqlite
{
    /// <summary>
    ///  CAPI3REF: Run-Time Limit Categories
    ///  KEYWORDS: {limit category} {*limit categories}
    /// 
    ///  These constants define various performance limits
    ///  that can be lowered at run-time using [sqlite3_limit()].
    ///  The synopsis of the meanings of the various limits is shown below.
    ///  Additional information is available at [limits | Limits in SQLite].
    /// 
    ///  <dl>
    ///  ^(<dt>LimitCategory.SQLITE_LIMIT_LENGTH</dt>
    ///  <dd>The maximum size of any string or BLOB or table row.<dd>)^
    /// 
    ///  ^(<dt>LimitCategory.SQLITE_LIMIT_SQL_LENGTH</dt>
    ///  <dd>The maximum length of an SQL statement, in bytes.</dd>)^
    /// 
    ///  ^(<dt>LimitCategory.SQLITE_LIMIT_COLUMN</dt>
    ///  <dd>The maximum number of columns in a table definition or in the
    ///  result set of a [SELECT] or the maximum number of columns in an index
    ///  or in an ORDER BY or GROUP BY clause.</dd>)^
    /// 
    ///  ^(<dt>LimitCategory.SQLITE_LIMIT_EXPR_DEPTH</dt>
    ///  <dd>The maximum depth of the parse tree on any expression.</dd>)^
    /// 
    ///  ^(<dt>LimitCategory.SQLITE_LIMIT_COMPOUND_SELECT</dt>
    ///  <dd>The maximum number of terms in a compound SELECT statement.</dd>)^
    /// 
    ///  ^(<dt>LimitCategory.SQLITE_LIMIT_VDBE_OP</dt>
    ///  <dd>The maximum number of instructions in a virtual machine program
    ///  used to implement an SQL statement.</dd>)^
    /// 
    ///  ^(<dt>LimitCategory.SQLITE_LIMIT_FUNCTION_ARG</dt>
    ///  <dd>The maximum number of arguments on a function.</dd>)^
    /// 
    ///  ^(<dt>LimitCategory.SQLITE_LIMIT_ATTACHED</dt>
    ///  <dd>The maximum number of [ATTACH | attached databases].)^</dd>
    /// 
    ///  ^(<dt>LimitCategory.SQLITE_LIMIT_LIKE_PATTERN_LENGTH</dt>
    ///  <dd>The maximum length of the pattern argument to the [LIKE] or
    ///  [GLOB] operators.</dd>)^
    /// 
    ///  ^(<dt>LimitCategory.SQLITE_LIMIT_VARIABLE_NUMBER</dt>
    ///  <dd>The maximum number of variables in an SQL statement that can
    ///  be bound.</dd>)^
    /// 
    ///  ^(<dt>SQLITE_LIMIT_TRIGGER_DEPTH</dt>
    ///  <dd>The maximum depth of recursion for triggers.</dd>)^
    ///  </dl>
    /// </summary>
    class LimitCategory
    {
      
        //#define SQLITE_LIMIT_LENGTH                    0
        //#define SQLITE_LIMIT_SQL_LENGTH                1
        //#define SQLITE_LIMIT_COLUMN                    2
        //#define SQLITE_LIMIT_EXPR_DEPTH                3
        //#define SQLITE_LIMIT_COMPOUND_SELECT           4
        //#define SQLITE_LIMIT_VDBE_OP                   5
        //#define SQLITE_LIMIT_FUNCTION_ARG              6
        //#define SQLITE_LIMIT_ATTACHED                  7
        //#define SQLITE_LIMIT_LIKE_PATTERN_LENGTH       8
        //#define SQLITE_LIMIT_VARIABLE_NUMBER           9
        //#define SQLITE_LIMIT_TRIGGER_DEPTH            10
        public const int SQLITE_LIMIT_LENGTH = 0;
        public const int SQLITE_LIMIT_SQL_LENGTH = 1;
        public const int SQLITE_LIMIT_COLUMN = 2;
        public const int SQLITE_LIMIT_EXPR_DEPTH = 3;
        public const int SQLITE_LIMIT_COMPOUND_SELECT = 4;
        public const int SQLITE_LIMIT_VDBE_OP = 5;
        public const int SQLITE_LIMIT_FUNCTION_ARG = 6;
        public const int SQLITE_LIMIT_ATTACHED = 7;
        public const int SQLITE_LIMIT_LIKE_PATTERN_LENGTH = 8;
        public const int SQLITE_LIMIT_VARIABLE_NUMBER = 9;
        public const int SQLITE_LIMIT_TRIGGER_DEPTH = 10;
    }
}
